<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Reference Section of PFR</title>
<link rel="stylesheet" href="../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="boost_pfr.html" title="Chapter 26. Boost.PFR 2.2">
<link rel="prev" href="boost_pfr/acknowledgements.html" title="Acknowledgements">
<link rel="next" href="doxygen/reference_section_of_pfr/config_8hpp_1ad8de7339eff9c9e93550884a08508db0.html" title="Macro BOOST_PFR_NOT_SUPPORTED">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
<td align="center"><a href="../../index.html">Home</a></td>
<td align="center"><a href="../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_pfr/acknowledgements.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="doxygen/reference_section_of_pfr/config_8hpp_1ad8de7339eff9c9e93550884a08508db0.html"><img src="../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="reference_section_of_pfr"></a>Reference Section of PFR</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.pfr_8hpp">Header &lt;boost/pfr.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.config_8hpp">Header &lt;boost/pfr/config.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.core_8hpp">Header &lt;boost/pfr/core.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.core__name_8hpp">Header &lt;boost/pfr/core_name.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.functions__for_8hpp">Header &lt;boost/pfr/functions_for.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.functors_8hpp">Header &lt;boost/pfr/functors.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.io_8hpp">Header &lt;boost/pfr/io.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.io__fields_8hpp">Header &lt;boost/pfr/io_fields.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.ops_8hpp">Header &lt;boost/pfr/ops.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.ops__fields_8hpp">Header &lt;boost/pfr/ops_fields.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.traits_8hpp">Header &lt;boost/pfr/traits.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.traits__fwd_8hpp">Header &lt;boost/pfr/traits_fwd.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.tuple__size_8hpp">Header &lt;boost/pfr/tuple_size.hpp&gt;</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.pfr_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr.hpp" target="_top">boost/pfr.hpp</a>&gt;</h3></div></div></div>
<p>Includes all the Boost.PFR headers </p>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.config_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/config.hpp" target="_top">boost/pfr/config.hpp</a>&gt;</h3></div></div></div>
<p>Contains all the macros that describe Boost.PFR configuration, like BOOST_PFR_ENABLED</p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>This header file doesn't require C++14 Standard and supports all C++ compilers, even pre C++14 compilers (C++11, C++03...). </p></td></tr>
</table></div>
<p>
</p>
<pre class="synopsis">

<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1ad8de7339eff9c9e93550884a08508db0.html" title="Macro BOOST_PFR_NOT_SUPPORTED">BOOST_PFR_NOT_SUPPORTED</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1af62f7349b6bdd18fa9cbb8a304ef532e.html" title="Macro BOOST_PFR_USE_LOOPHOLE">BOOST_PFR_USE_LOOPHOLE</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a3400997fe950d21e9ba3fa800f143297.html" title="Macro BOOST_PFR_USE_CPP17">BOOST_PFR_USE_CPP17</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1ab6386e3de0ce77738f68ee2450b7dfa8.html" title="Macro BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE">BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1ac14a0bfbd37bf1abaceeaf98cc5eb9f1.html" title="Macro BOOST_PFR_HAS_GUARANTEED_COPY_ELISION">BOOST_PFR_HAS_GUARANTEED_COPY_ELISION</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a07d328c6e59fb8d89f1a97821b6ae7fe.html" title="Macro BOOST_PFR_ENABLE_IMPLICIT_REFLECTION">BOOST_PFR_ENABLE_IMPLICIT_REFLECTION</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1af757b572898de8705c615020331b1b0d.html" title="Macro BOOST_PFR_CORE_NAME_ENABLED">BOOST_PFR_CORE_NAME_ENABLED</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a54badc94e9b9c63b70761268b26f174f.html" title="Macro BOOST_PFR_CORE_NAME_PARSING">BOOST_PFR_CORE_NAME_PARSING</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a962c4e7b5ac0bee28da7d2d3232d438c.html" title="Macro BOOST_PFR_MAYBE_UNUSED">BOOST_PFR_MAYBE_UNUSED</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a74ed49cd074a1d75a8a2509048b38959.html" title="Macro BOOST_PFR_ENABLED">BOOST_PFR_ENABLED</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a3c7cd5cfc12f1ff4e8460fb942c3f149.html" title="Macro BOOST_PFR_BEGIN_MODULE_EXPORT">BOOST_PFR_BEGIN_MODULE_EXPORT</a>
<a class="link" href="doxygen/reference_section_of_pfr/config_8hpp_1a74d5e4dd907704001b59aaff1f99425b.html" title="Macro BOOST_PFR_END_MODULE_EXPORT">BOOST_PFR_END_MODULE_EXPORT</a></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.core_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/core.hpp" target="_top">boost/pfr/core.hpp</a>&gt;</h3></div></div></div>
<p>Contains all the basic tuple-like interfaces  <a class="link" href=""> boost::pfr::get </a>,  <a class="link" href=""> boost::pfr::tuple_size </a>,  <a class="link" href=""> boost::pfr::tuple_element_t </a>, and others.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/core_8hpp_1a13b2b739f761f1763cdd7dd9d3b9d845.html" title="Type definition tuple_element"><span class="identifier">tuple_element</span></a><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tuple_element</span><span class="special">&lt;</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <a class="link" href="doxygen/reference_section_of_pfr/core_8hpp_1a58e6072517b22e9d326bdd63e6df2d7e.html" title="Type definition tuple_element_t"><span class="identifier">tuple_element_t</span></a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="identifier">BOOST_PFR_BEGIN_MODULE_EXPORT</span> <span class="keyword">constexpr</span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <a class="link" href="doxygen/reference_section_of_pfr/core_8hpp_1a07b17ed2eaa9115346f5b14899ec53e4.html" title="Function template get"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> 
      <a name="doxygen.reference_section_of_pfr.core_8hpp_1a470cc3e53b72923c42a3790b415c9c1b"></a><span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span> val<span class="special">,</span> 
          <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">auto</span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1a75bb2b75ecedec11f446d311f80ba716"></a><span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> 
               <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span><span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">auto</span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1a9468f2367ef27694fbab0e19b69c5cb4"></a><span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span> val<span class="special">,</span> 
               <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_rvalue_reference</span><span class="special">&lt;</span> <span class="identifier">T</span> <span class="special">&amp;&amp;</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1a8bd42616b64b286e9c519cd9bfc597a3"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> val<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="identifier">U</span> <span class="special">&amp;</span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1ace2b6171fae3183f641b5f85fbe396d2"></a><span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span> val<span class="special">,</span> 
              <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="identifier">U</span> <span class="special">&amp;</span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1a153ac7268ebd17d0db502258d615de58"></a><span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> 
              <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span><span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="identifier">U</span> <span class="special">&amp;&amp;</span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1adde18c71e1b2516b8a952ee202ad1645"></a><span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span> val<span class="special">,</span> 
               <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_rvalue_reference</span><span class="special">&lt;</span> <span class="identifier">T</span> <span class="special">&amp;&amp;</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">auto</span> <a class="link" href="doxygen/reference_section_of_pfr/core_8hpp_1afa68927e3e0e191200fad450e79bb389.html" title="Function template structure_to_tuple"><span class="identifier">structure_to_tuple</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span><span class="special">...</span> Elements<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.core_8hpp_1ab81eed52bc262644b8c97902ec546f7f"></a><span class="identifier">tie_from_structure</span><span class="special">(</span><span class="identifier">Elements</span> <span class="special">&amp;</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.core__name_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/core_name.hpp" target="_top">boost/pfr/core_name.hpp</a>&gt;</h3></div></div></div>
<p>Contains functions  <a class="link" href=""> boost::pfr::get_name </a> and  <a class="link" href=""> boost::pfr::names_as_array </a> to know which names each field of any  <a class="link" href="boost_pfr/limitations_and_configuration.html" title="Limitations and Configuration"> simple aggregate  </a> has.</p>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> :  <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.reflection_of_field_name" title="Reflection of field name"> 'Reflection of field names'  </a> for details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="identifier">BOOST_PFR_BEGIN_MODULE_EXPORT</span> <span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span> <a class="link" href="doxygen/reference_section_of_pfr/core__name_8hpp_1ad820b865b5817b15c21faca3f470e511.html" title="Function template get_name"><span class="identifier">get_name</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_size_v</span><span class="special">&lt;</span> <span class="identifier">T</span> <span class="special">&gt;</span> <span class="special">&gt;</span> 
      <a class="link" href="doxygen/reference_section_of_pfr/core__name_8hpp_1adefd2900157dc0c909a5df8a5a0e18bc.html" title="Function template names_as_array"><span class="identifier">names_as_array</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> F<span class="special">&gt;</span> <span class="keyword">void</span> <a class="link" href="doxygen/reference_section_of_pfr/core__name_8hpp_1a8c6c718187b9f6e884e6fc9f53c5d7e6.html" title="Function template for_each_field_with_name"><span class="identifier">for_each_field_with_name</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">,</span> <span class="identifier">F</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.functions__for_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/functions_for.hpp" target="_top">boost/pfr/functions_for.hpp</a>&gt;</h3></div></div></div>
<p>Contains BOOST_PFR_FUNCTIONS_FOR macro that defined comparison and stream operators for T along with hash_value function. <span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.functions__for_8hpp" title="Header &lt;boost/pfr/functions_for.hpp&gt;"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">functions_for</span><span class="special">.</span><span class="identifier">hpp</span></a><span class="special">&gt;</span>

<span class="keyword">namespace</span> <span class="identifier">my_namespace</span> <span class="special">{</span>
    <span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
        <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
    <span class="special">}</span><span class="special">;</span>
    <a class="link" href="doxygen/reference_section_of_pfr/functions__for_8hpp_1a4092167ce3b09df7a69fe9123cf48c6a.html" title="Macro BOOST_PFR_FUNCTIONS_FOR"><span class="identifier">BOOST_PFR_FUNCTIONS_FOR</span></a><span class="special">(</span><span class="identifier">my_struct</span><span class="special">)</span>
<span class="special">}</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> :  <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators'  </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis">

<a class="link" href="doxygen/reference_section_of_pfr/functions__for_8hpp_1a4092167ce3b09df7a69fe9123cf48c6a.html" title="Macro BOOST_PFR_FUNCTIONS_FOR">BOOST_PFR_FUNCTIONS_FOR</a>(T)</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.functors_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/functors.hpp" target="_top">boost/pfr/functors.hpp</a>&gt;</h3></div></div></div>
<p>Contains functors that are close to the Standard Library ones. Each functor calls corresponding Boost.PFR function from <a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.ops_8hpp" title="Header &lt;boost/pfr/ops.hpp&gt;">boost/pfr/ops.hpp</a></p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.functors_8hpp" title="Header &lt;boost/pfr/functors.hpp&gt;"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">functors</span><span class="special">.</span><span class="identifier">hpp</span></a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">std</span><span class="special">::</span><span class="identifier">unordered_set</span><span class="special">&lt;</span>
    <span class="identifier">my_struct</span><span class="special">,</span>
    <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1hash.html" title="Struct template hash"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">hash</span><span class="special">&lt;</span><span class="special">&gt;</span></a><span class="special">,</span>
    <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1equal__to.html" title="Struct template equal_to"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="special">&gt;</span></a>
<span class="special">&gt;</span> <span class="identifier">my_set</span><span class="special">;</span>
</pre>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1equal__to.html" title="Struct template equal_to">equal_to</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1greater.html" title="Struct template greater">greater</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1greater__equal.html" title="Struct template greater_equal">greater_equal</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1hash.html" title="Struct template hash">hash</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1less.html" title="Struct template less">less</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1less__equal.html" title="Struct template less_equal">less_equal</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1not__equal.html" title="Struct template not_equal">not_equal</a><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.io_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/io.hpp" target="_top">boost/pfr/io.hpp</a>&gt;</h3></div></div></div>
<p>Contains IO stream manipulator  <a class="link" href=""> boost::pfr::io </a> for types. If type is streamable using its own operator or its conversion operator, then the types operator is used.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.io_8hpp" title="Header &lt;boost/pfr/io.hpp&gt;"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">io</span><span class="special">.</span><span class="identifier">hpp</span></a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <a class="link" href="doxygen/reference_section_of_pfr/io_8hpp_1adcb0ad73dc25ac01d68cf0e7fb98d506.html" title="Function template io"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">io</span></a><span class="special">(</span><span class="identifier">s1</span><span class="special">)</span><span class="special">;</span>  <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> :  <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators'  </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="identifier">BOOST_PFR_BEGIN_MODULE_EXPORT</span> <span class="keyword">auto</span> <a class="link" href="doxygen/reference_section_of_pfr/io_8hpp_1adcb0ad73dc25ac01d68cf0e7fb98d506.html" title="Function template io"><span class="identifier">io</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.io__fields_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/io_fields.hpp" target="_top">boost/pfr/io_fields.hpp</a>&gt;</h3></div></div></div>
<p>Contains IO manipulator  <a class="link" href=""> boost::pfr::io_fields </a> to read/write any  <a class="link" href="boost_pfr/limitations_and_configuration.html" title="Limitations and Configuration"> simple aggregate  </a> field-by-field.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
    <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>

<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">my_struct</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
    <span class="keyword">return</span> <span class="identifier">os</span> <span class="special">&lt;&lt;</span> <a class="link" href="doxygen/reference_section_of_pfr/io__fields_8hpp_1a443c5a5adc536e5a94c732f76c673d20.html" title="Function template io_fields"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">io_fields</span></a><span class="special">(</span><span class="identifier">x</span><span class="special">)</span><span class="special">;</span>  <span class="comment">// Equivalent to: os &lt;&lt; "{ " &lt;&lt; x.i &lt;&lt; " ," &lt;&lt;  x.s &lt;&lt; " }"</span>
<span class="special">}</span>

<span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">my_struct</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
    <span class="keyword">return</span> <span class="identifier">is</span> <span class="special">&gt;&gt;</span> <a class="link" href="doxygen/reference_section_of_pfr/io__fields_8hpp_1a443c5a5adc536e5a94c732f76c673d20.html" title="Function template io_fields"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">io_fields</span></a><span class="special">(</span><span class="identifier">x</span><span class="special">)</span><span class="special">;</span>  <span class="comment">// Equivalent to: is &gt;&gt; "{ " &gt;&gt; x.i &gt;&gt; " ," &gt;&gt;  x.s &gt;&gt; " }"</span>
<span class="special">}</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> :  <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators'  </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="identifier">BOOST_PFR_BEGIN_MODULE_EXPORT</span> <span class="keyword">auto</span> <a class="link" href="doxygen/reference_section_of_pfr/io__fields_8hpp_1a443c5a5adc536e5a94c732f76c673d20.html" title="Function template io_fields"><span class="identifier">io_fields</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.ops_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/ops.hpp" target="_top">boost/pfr/ops.hpp</a>&gt;</h3></div></div></div>
<p>Contains comparison and hashing functions. If type is comparable using its own operator or its conversion operator, then the types operator is used. Otherwise the operation is done via corresponding function from <a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.ops_8hpp" title="Header &lt;boost/pfr/ops.hpp&gt;">boost/pfr/ops.hpp</a> header.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.ops_8hpp" title="Header &lt;boost/pfr/ops.hpp&gt;"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span></a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">lt</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> :  <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators'  </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1a8d231fd562e78a07a9942d6b55fa9e16.html" title="Function template eq"><span class="identifier">eq</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1a0feb96c8d5ea39837216b08b945977cb"></a><span class="identifier">eq</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1a952c8fa2656fc8479162dd3dc91652c8.html" title="Function template ne"><span class="identifier">ne</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1ae8a7b9b2195777dd7d5f2a5733b364aa"></a><span class="identifier">ne</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1aa168695edf1ce7253165cc00c88bb76e.html" title="Function template lt"><span class="identifier">lt</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1ac0829eb4f1f8f8c8ca767df36e4e13c7"></a><span class="identifier">lt</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1a7d148d33a99eff5423d53287bba132ce.html" title="Function template gt"><span class="identifier">gt</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1a98c6c7f4d8ab3e1ff3b6a1e4042dbdd8"></a><span class="identifier">gt</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1af441c2212a969c62cdc4becf568dceb9.html" title="Function template le"><span class="identifier">le</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1a1a21abc65ebb22d4ba775ab4aba7efe0"></a><span class="identifier">le</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1a31f2e5881d4309ecf4d92a2f0b8e3c1d.html" title="Function template ge"><span class="identifier">ge</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1a30bc1d4dee8d1f55c68d2e81fcd98f87"></a><span class="identifier">ge</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/ops_8hpp_1ac0f14b2ba7ec8f4dd7ccf6d28d1656b2.html" title="Function template hash_value"><span class="identifier">hash_value</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="doxygen.reference_section_of_pfr.ops_8hpp_1ad205ff02167d0060ff0b8dcc1ac6577f"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> value<span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.ops__fields_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/ops_fields.hpp" target="_top">boost/pfr/ops_fields.hpp</a>&gt;</h3></div></div></div>
<p>Contains field-by-fields comparison and hash functions.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><a class="link" href="reference_section_of_pfr.html#doxygen.reference_section_of_pfr.ops__fields_8hpp" title="Header &lt;boost/pfr/ops_fields.hpp&gt;"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">ops_fields</span><span class="special">.</span><span class="identifier">hpp</span></a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">2</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">lt_fields</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> :  <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators'  </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="identifier">BOOST_PFR_BEGIN_MODULE_EXPORT</span> <span class="keyword">constexpr</span> <span class="keyword">bool</span> 
      <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1a0296971dd9810d022b3b8ec7f43cbaed.html" title="Function template eq_fields"><span class="identifier">eq_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="keyword">bool</span> <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1affccfae701ea29ddf4debeeab7a00291.html" title="Function template ne_fields"><span class="identifier">ne_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="keyword">bool</span> <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1a233391590dbd80765626d44295a7beb5.html" title="Function template gt_fields"><span class="identifier">gt_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="keyword">bool</span> <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1ac4e8e80f5cf479958a120de71d0c14b4.html" title="Function template lt_fields"><span class="identifier">lt_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="keyword">bool</span> <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1a8e84bb079bd538ac6262bf754bb361cd.html" title="Function template ge_fields"><span class="identifier">ge_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="keyword">bool</span> <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1a445e4eb8601018eadd8f46aa18f2ebd4.html" title="Function template le_fields"><span class="identifier">le_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="doxygen/reference_section_of_pfr/ops__fields_8hpp_1ac4244d51ab75ae9f933bd6538787a428.html" title="Function template hash_fields"><span class="identifier">hash_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.traits_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/traits.hpp" target="_top">boost/pfr/traits.hpp</a>&gt;</h3></div></div></div>
<p>Contains traits  <a class="link" href=""> boost::pfr::is_reflectable </a> and  <a class="link" href=""> boost::pfr::is_implicitly_reflectable </a> for detecting an ability to reflect type.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> WhatFor<span class="special">&gt;</span> 
      <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1is__reflectable_3_01const_01T_00_01WhatFor_01_4.html" title="Struct template is_reflectable&lt;const T, WhatFor&gt;">is_reflectable</a><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">WhatFor</span><span class="special">&gt;</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> WhatFor<span class="special">&gt;</span> 
      <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1is__reflectable_3_01const_01volatile_01T_00_01WhatFor_01_4.html" title="Struct template is_reflectable&lt;const volatile T, WhatFor&gt;">is_reflectable</a><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">volatile</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">WhatFor</span><span class="special">&gt;</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> WhatFor<span class="special">&gt;</span> 
      <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1is__reflectable_3_01volatile_01T_00_01WhatFor_01_4.html" title="Struct template is_reflectable&lt;volatile T, WhatFor&gt;">is_reflectable</a><span class="special">&lt;</span><span class="keyword">volatile</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">WhatFor</span><span class="special">&gt;</span><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/traits_8hpp_1a0426e678294cdc15870a4e6039c80ff3.html" title="Type definition is_implicitly_reflectable"><span class="identifier">is_implicitly_reflectable</span></a><span class="special">;</span>

    <span class="keyword">bool</span> <a class="link" href="doxygen/reference_section_of_pfr/traits_8hpp_1ad5a1339ce568597f25b11f43ae356f3b.html" title="Global is_implicitly_reflectable_v">is_implicitly_reflectable_v</a><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.traits__fwd_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/traits_fwd.hpp" target="_top">boost/pfr/traits_fwd.hpp</a>&gt;</h3></div></div></div>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> WhatFor<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="doxygen/reference_section_of_pfr/structboost_1_1pfr_1_1is__reflectable.html" title="Struct template is_reflectable">is_reflectable</a><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="doxygen.reference_section_of_pfr.tuple__size_8hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_81_0/boost/pfr/tuple_size.hpp" target="_top">boost/pfr/tuple_size.hpp</a>&gt;</h3></div></div></div>
<p>Contains tuple-like interfaces to get fields count  <a class="link" href=""> boost::pfr::tuple_size </a>,  <a class="link" href=""> boost::pfr::tuple_size_v </a>.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="doxygen/reference_section_of_pfr/tuple__size_8hpp_1afd9406c04ab356128728739825f6e770.html" title="Type definition tuple_size"><span class="identifier">tuple_size</span></a><span class="special">;</span>

    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="doxygen/reference_section_of_pfr/tuple__size_8hpp_1a2ab10e2a62a6ddfb579bdd45399c0b2d.html" title="Global tuple_size_v">tuple_size_v</a><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
</div>
<div class="copyright-footer">Copyright © 2016-2025 Antony Polukhin<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_pfr/acknowledgements.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="doxygen/reference_section_of_pfr/config_8hpp_1ad8de7339eff9c9e93550884a08508db0.html"><img src="../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
